package structure;

public class sparseArr {
    public static void main(String[] args) {
        int arr[][]=new int [11][11];
        arr[3][4]=2;
        arr[6][8]=5;
        arr[5][5]=666;
        arr[6][6]=777;
        arr[7][7]=888;
        int sum=0;
        for( int[]i:arr){
            for(int data:i){
              if(data!=0){
                  sum++;//统计不为0的数据个数
              }
            }
        }
        //根据不为0的数据个数创建稀疏数组
        int sparseArr[][]=new int [sum+1][3];
        //将普通数组转换为稀疏数组
        sparseArr[0][0]=11;
        sparseArr[0][1]=11;
        sparseArr[0][2]=sum;
        int count=0;

        for(int i=0;i<11;i++){
            for(int j=0;j<11;j++){
                if(arr[i][j]!=0){
                    count++;
                    sparseArr[count][0]=i;
                    sparseArr[count][1]=j;
                    sparseArr[count][2]=arr[i][j];
                }
            }
        }

        //打印稀疏数组
        System.out.println("========稀疏数组======");
        for(int[] x:sparseArr){
            for(int data:x){
                System.out.print(data+" ");
            }
            System.out.println("");
        }
        //将稀疏数组转为普通数组
        int [][]newarr=new int[sparseArr[0][0]][sparseArr[0][1]];
        //将非0元素导入数组
        for(int tem=1;tem<=sum;tem++){
            newarr[sparseArr[tem][0]][sparseArr[tem][1]]=sparseArr[tem][2];
        }
//打印新数组
        System.out.println("========新数组======");
        for(int[] tem:newarr){
            for(int data: tem){
                System.out.print(data+" ");
            }
            System.out.println("");
        }
    }
}
